﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using Cielo.API;
using Cielo.API.Resposta;
using Cielo.API.Requisicao;
using Cielo.API.XML;
namespace Cielo.API
{
    public class Gateway : IGatewayProxy, IGateway
    {
        public static IGateway Construir()
        {
            return new Gateway();
        }
        internal Gateway()
        {

        }

        public string NumeroAfiliacao { get; set; }
        public string ChaveAcesso { get; set; }
        public string CieloURL { get; set; }
        public bool HabilitarCapturaAutomatica { get; set; }
        public Cliente Cliente { get; set; }
        public Cielo.API.Requisicao.FormaPagamento FormaPagamento { get; set; }
        public RequisicaoPagamento RequisicaoPagamento { get; set; }

        public RespostaRequisicao Autorizar(Venda venda)
        {
            NumeroAfiliacao = ConfigurationManager.AppSettings["CieloNumeroAfiliado"];
            ChaveAcesso = ConfigurationManager.AppSettings["CieloChaveAcesso"];
            CieloURL = ConfigurationManager.AppSettings["CieloURL"];

            var dadosCartao = new Cliente.DadosCartao(venda.NumeroCartao, venda.DataExpiracaoCartao, !String.IsNullOrEmpty(venda.CodigoSeguranca), venda.CodigoSeguranca);
            Cliente = new Cliente(venda.NomeCliente, dadosCartao);
            FormaPagamento = new Cielo.API.Requisicao.FormaPagamento(venda.BandeiraCartao,Cielo.API.Requisicao.FormaPagamento.TipoProdutos.DEBT, venda.Parcelas);
            RequisicaoPagamento = new RequisicaoPagamento(venda.NumeroUnico, venda.Valor, Moeda.REAL, DateTime.Now, venda.DescricaoProduto);

            var webService = new WebServiceWrapper();
            return webService.EnviarRequisicao(new ConversorGatewayXML(this).ToString(), CieloURL);
        }


    }

}
